chore(cli): cli import code never reaches "??" operator #28113
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We're seeing this linter error flag:
Warning: G] The "??" operator here will always return the left operand [suspicious-nullish-coalescing]
in the yarn upgrade task.It is because
const defaultValue = typeof resourceProps[idProp] ?? '';
never reaches the??
sincetypeof
returns a string (returns"undefined"
when the type its looking at isundefined
). The code in question is buggy, but also ambiguous in meaning. It could mean:const defaultValue = typeof (resourceProps[idProp] ?? '');
, which means that we wantdefaultValue === 'string'
whenresourceProps[idProp] === undefined
.or
const defaultValue = resourceProps[idProp] ? typeof resourceProps[idProp] : '';
, which means that we wantdefaultValue === ''
whenresourceProps[idProp] === undefined
.Later on we use
defaultValue
as the condition in a ternary operator. This tells me that the latter is the correct way to interpret the code's intention, since''
evaluates tofalse
. All other options, including'string'
and'undefined'
, evaluate totrue
.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license